/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package ar.fi.uba.taller2.participacion.interfaces.comunicacion.ws.dummys;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;

import ar.fi.uba.taller2.participacion.interfaces.comunicacion.ws.IForo;
import ar.fi.uba.taller2.participacion.interfaces.integracion.QueryHelper;

//import com.ws.services.IntegracionStub;

/**
 * 
 * @author pable
 */
@WebService(endpointInterface = "ar.fi.uba.taller2.participacion.interfaces.comunicacion.ws.IForo")
public class ForoImpl implements IForo {
	private QueryHelper queryHelper = new QueryHelper();

	// private XmlUtil xmlutil = new XmlUtil();

	/**
	 * Verifica si un usuario tiene permisos para ver un foro. Permisos: TODO
	 * verificar que permisos deberia tener
	 * 
	 * @param username
	 *            the usuario id
	 * @param idAmbito
	 *            the ambito id
	 * @return true, if successful
	 */
	@WebMethod
	public boolean puedeVerElForo(
			@WebParam(name = "username") String username,
			@WebParam(name = "idAmbito") int idAmbito) {
		return true;
	}

	/**
	 * Verifica si un usuario tiene permisos para crear una seccion en un foro.
	 * Permisos necesarios: Coordinador
	 * 
	 * @param username
	 *            the usuario id
	 * @param idAmbito
	 *            the ambito id
	 * @return true, if successful
	 */
	@WebMethod
	public boolean puedeCrearSeccion(
			@WebParam(name = "username") String username,
			@WebParam(name = "idAmbito") int idAmbito) {
		// List<Integer> coordinadores =
		// ConsultasHelper.obtenerCoordinadoresDeAmbito(idAmbito);
		// return coordinadores.contains(username);
		return queryHelper.esCoordinadorDelAmbito(username, idAmbito);

	}

	/**
	 * Verifica si un usuario tiene permisos para editar una seccion en un foro.
	 * Permisos necesarios: Coordinador
	 * 
	 * @param username
	 *            the usuario id
	 * @param idAmbito
	 *            the ambito id
	 * @return true, if successful
	 */
	@WebMethod
	public boolean puedeEditarSeccion(
			@WebParam(name = "username") String username,
			@WebParam(name = "idAmbito") int idAmbito) {
		// List<Integer> coordinadores =
		// ConsultasHelper.obtenerCoordinadoresDeAmbito(idAmbito);
		// return coordinadores.contains(username);
		return queryHelper.esCoordinadorDelAmbito(username, idAmbito);
	}

	/**
	 * Verifica si un usuario tiene permisos para eliminar una seccion en un
	 * foro. Permisos necesarios: Coordinador
	 * 
	 * @param username
	 *            the usuario id
	 * @param idAmbito
	 *            the ambito id
	 * @return true, if successful
	 */
	@WebMethod
	public boolean puedeEliminarSeccion(
			@WebParam(name = "username") String username,
			@WebParam(name = "idAmbito") int idAmbito) {
		// List<Integer> coordinadores =
		// ConsultasHelper.obtenerCoordinadoresDeAmbito(idAmbito);
		// return coordinadores.contains(username);
		return queryHelper.esCoordinadorDelAmbito(username, idAmbito);
	}

	/**
	 * Verifica si un usuario tiene permisos para crear un subforo. Permisos
	 * necesarios: Coordinador
	 * 
	 * @param username
	 *            the usuario id
	 * @param idAmbito
	 *            the ambito id
	 * @return true, if successful
	 */
	@WebMethod
	public boolean puedeCrearSubforo(
			@WebParam(name = "username") String username,
			@WebParam(name = "idAmbito") int idAmbito) {
		// List<Integer> coordinadores =
		// ConsultasHelper.obtenerCoordinadoresDeAmbito(idAmbito);
		// return coordinadores.contains(username);
		return queryHelper.esCoordinadorDelAmbito(username, idAmbito);
	}

	/**
	 * Verifica si un usuario tiene permisos para editar un subforo. Permisos
	 * necesarios: Coordinador
	 * 
	 * @param username
	 *            the usuario id
	 * @param idAmbito
	 *            the ambito id
	 * @return true, if successful
	 */
	@WebMethod
	public boolean puedeEditarSubforo(
			@WebParam(name = "username") String username,
			@WebParam(name = "idAmbito") int idAmbito) {
		// List<Integer> coordinadores =
		// ConsultasHelper.obtenerCoordinadoresDeAmbito(idAmbito);
		// return coordinadores.contains(username);
		return queryHelper.esCoordinadorDelAmbito(username, idAmbito);
	}

	/**
	 * Verifica si un usuario tiene permisos para mover un subforo. Permisos
	 * necesarios: Coordinador
	 * 
	 * @param username
	 *            the usuario id
	 * @param idAmbito
	 *            the ambito id
	 * @return true, if successful
	 */
	@WebMethod
	public boolean puedeMoverSubforo(
			@WebParam(name = "username") String username,
			@WebParam(name = "idAmbito") int idAmbito) {
		// List<Integer> coordinadores =
		// ConsultasHelper.obtenerCoordinadoresDeAmbito(idAmbito);
		// return coordinadores.contains(username);
		return queryHelper.esCoordinadorDelAmbito(username, idAmbito);
	}

	/**
	 * Verifica si un usuario tiene permisos para eliminar un subforo. Permisos
	 * necesarios: Coordinador
	 * 
	 * @param username
	 *            the usuario id
	 * @param idAmbito
	 *            the ambito id
	 * @return true, if successful
	 */
	@WebMethod
	public boolean puedeEliminarSubforo(
			@WebParam(name = "username") String username,
			@WebParam(name = "idAmbito") int idAmbito) {
		// List<Integer> coordinadores =
		// ConsultasHelper.obtenerCoordinadoresDeAmbito(idAmbito);
		// return coordinadores.contains(username);

		return queryHelper.esCoordinadorDelAmbito(username, idAmbito);
	}

	/**
	 * Verifica si un usuario tiene permisos para crear un tema dentro de un
	 * foro.
	 * 
	 * @param username
	 *            the usuario id
	 * @param idAmbito
	 *            the ambito id
	 * @return true, if successful
	 */
	/* TODO: ver permisos */
	@WebMethod
	public boolean puedeCrearTema(
			@WebParam(name = "username") String username,
			@WebParam(name = "idAmbito") int idAmbito) {

		return queryHelper.esCoordinadorOParticipanteDelAmbito(username,
				idAmbito);
	}

	/**
	 * Verifica si un usuario tiene permisos para editar un tema dentro de un
	 * foro. Permisos necesarios: Participante o Coordinador
	 * 
	 * @param username
	 *            the usuario id
	 * @param idAmbito
	 *            the ambito id
	 * @param idForo
	 *            the foro id
	 * @param temaId
	 *            the tema id
	 * @return true, if successful
	 */
	@WebMethod
	public boolean puedeEditarTema(
			@WebParam(name = "username") String username,
			@WebParam(name = "idAmbito") int idAmbito,
			@WebParam(name = "idForo") int idForo,
			@WebParam(name = "temaId") int temaId) {
		// List<Integer> participantes =
		// ConsultasHelper.obtenerParticipantesDeAmbito(idAmbito);
		// return participantes.contains(username);

		return queryHelper.esCoordinadorOParticipanteDelAmbito(username,
				idAmbito);
	}

	/**
	 * Verifica si un usuario tiene permisos para eliminar un tema dentro de un
	 * foro. Permisos necesarios: Coordinador (puede editar temas creados por
	 * otros participantes y por sí mismo).
	 * 
	 * @param username
	 *            the usuario id
	 * @param idAmbito
	 *            the ambito id
	 * @param idForo
	 *            the foro id
	 * @param subidForo
	 *            the subforo id
	 * @param temaId
	 *            the tema id
	 * @return true, if successful
	 */
	@WebMethod
	public boolean puedeEliminarTema(
			@WebParam(name = "username") String username,
			@WebParam(name = "idAmbito") int idAmbito,
			@WebParam(name = "idForo") int idForo,
			@WebParam(name = "subidForo") int subidForo,
			@WebParam(name = "temaId") int temaId) {
		return queryHelper.esCoordinadorDelAmbito(username,
				idAmbito);
	}

	/**
	 * Verifica si un usuario tiene permisos para destacar un tema. Permisos
	 * necesarios: Coordinador
	 * 
	 * @param username
	 *            the usuario id
	 * @param idAmbito
	 *            the ambito id
	 * @return true, if successful
	 */
	@WebMethod
	public boolean puedeDestacarTema(
			@WebParam(name = "username") String username,
			@WebParam(name = "idAmbito") int idAmbito) {
		// List<Integer> coordinadores =
		// ConsultasHelper.obtenerCoordinadoresDeAmbito(idAmbito);
		// return coordinadores.contains(username);

		return queryHelper.esCoordinadorDelAmbito(username,
				idAmbito);
	}

	/**
	 * Verifica si un usuario tiene permisos para cancelar el descatacar tema
	 * dentro de un foro. Permisos necesarios: Coordinador
	 * 
	 * @param username
	 *            the usuario id
	 * @param idAmbito
	 *            the ambito id
	 * @return true, if successful
	 */
	@WebMethod
	public boolean puedeCancelarDestacarTema(
			@WebParam(name = "username") String username,
			@WebParam(name = "idAmbito") int idAmbito) {
		// List<Integer> coordinadores =
		// ConsultasHelper.obtenerCoordinadoresDeAmbito(idAmbito);
		// return coordinadores.contains(username);

		return queryHelper.esCoordinadorDelAmbito(username,
				idAmbito);
	}

	/**
	 * Verifica si un usuario tiene permisos para crear un mensaje dentro de un
	 * tema. Permisos necesarios: Participante o Coordinador
	 * 
	 * @param username
	 *            the usuario id
	 * @param idAmbito
	 *            the ambito id
	 * @return true, if successful
	 */
	@WebMethod
	public boolean puedeCrearMensaje(
			@WebParam(name = "username") String username,
			@WebParam(name = "idAmbito") int idAmbito) {
		// List<Integer> participantes =
		// ConsultasHelper.obtenerParticipantesDeAmbito(idAmbito);
		// return participantes.contains(username);

		return queryHelper.esCoordinadorOParticipanteDelAmbito(username,
				idAmbito);
	}

	/**
	 * Verifica si un usuario tiene permisos para editar un mensaje dentro de un
	 * tema. Permisos necesarios: Participante (sólo puede editar mensajes
	 * propios) o Coordinador (puede modificar mensajes creados por otros
	 * usuarios o por sí mismo)
	 * 
	 * @param username
	 *            the usuario id
	 * @param idAmbito
	 *            the ambito id
	 * @param idForo
	 *            the foro id
	 * @param temaId
	 *            the tema id
	 * @param mensajeId
	 *            the mensaje id
	 * @return true, if successful
	 */
	@WebMethod
	public boolean puedeEditarMensaje(
			@WebParam(name = "username") String username,
			@WebParam(name = "idAmbito") int idAmbito,
			@WebParam(name = "idForo") int idForo,
			@WebParam(name = "temaId") int temaId,
			@WebParam(name = "mensajeId") int mensajeId) {
		return queryHelper.esCoordinadorOParticipanteDelAmbito(username,
				idAmbito);
	}

	/**
	 * Verifica si un usuario tiene permisos para eliminar un mensaje dentro de
	 * un tema. Permisos necesarios: Coordinador (puede eliminar mensajes
	 * creados por otros usuarios o por sí mismo)
	 * 
	 * @param username
	 *            the usuario id
	 * @param idAmbito
	 *            the ambito id
	 * @param idForo
	 *            the foro id
	 * @param temaId
	 *            the tema id
	 * @param mensajeId
	 *            the mensaje id
	 * @return true, if successful
	 */
	@WebMethod
	public boolean puedeEliminarMensaje(
			@WebParam(name = "username") String username,
			@WebParam(name = "idAmbito") int idAmbito,
			@WebParam(name = "idForo") int idForo,
			@WebParam(name = "temaId") int temaId,
			@WebParam(name = "mensajeId") int mensajeId) {
		// List<Integer> coordinadores =
		// ConsultasHelper.obtenerCoordinadoresDeAmbito(idAmbito);
		// return coordinadores.contains(username);

		return queryHelper.esCoordinadorDelAmbito(username, idAmbito);
	}

	/**
	 * Verifica si un usuario tiene permisos para ver un tema dentro del foro.
	 * Permisos necesarios: Participante o Coordinador
	 * 
	 * @param username
	 *            the usuario id
	 * @param idAmbito
	 *            the ambito id
	 * @return true, if successful
	 */
	@WebMethod
	public boolean puedeMostrarTema(
			@WebParam(name = "username") String username,
			@WebParam(name = "idAmbito") int idAmbito) {
		// List<Integer> coordinadores =
		// ConsultasHelper.obtenerCoordinadoresDeAmbito(idAmbito);
		// return coordinadores.contains(username);

		return queryHelper.esCoordinadorOParticipanteDelAmbito(username,
				idAmbito);
	}

	/**
	 * Verifica si un usuario tiene permisos para ver un mensaje dentro de un
	 * tema del foro. Permisos necesarios: Participantem, Coordinador
	 * 
	 * @param username
	 *            the usuario id
	 * @param idAmbito
	 *            the ambito id
	 * @return true, if successful
	 */
	@WebMethod
	public boolean puedeMostrarMensaje(
			@WebParam(name = "username") String username,
			@WebParam(name = "idAmbito") int idAmbito) {
		// List<Integer> coordinadores =
		// ConsultasHelper.obtenerCoordinadoresDeAmbito(idAmbito);
		// return coordinadores.contains(username);

		return queryHelper.esCoordinadorOParticipanteDelAmbito(username,
				idAmbito);
	}

	/**
	 * Verifica si un usuario tiene permisos para hacer una busqueda por
	 * palabras dentro del foro. Permisos necesarios: Participante o coordinador
	 * 
	 * @param username
	 *            the usuario id
	 * @param idAmbito
	 *            the ambito id
	 * @return true, if successful
	 */

	@WebMethod
	public boolean puedeBuscarMensajesPorPalabras(
			@WebParam(name = "username") String username,
			@WebParam(name = "idAmbito") int idAmbito) {
		// List<Integer> coordinadores =
		// ConsultasHelper.obtenerCoordinadoresDeAmbito(idAmbito);
		// return coordinadores.contains(username);

		return queryHelper.esCoordinadorOParticipanteDelAmbito(username,
				idAmbito);
	}

	/**
	 * Verifica si un usuario tiene permisos para hacer una busqueda por autor
	 * dentro del foro. Permisos necesarios: Participante o coordinador
	 * 
	 * @param username
	 *            the usuario id
	 * @param idAmbito
	 *            the ambito id
	 * @return true, if successful
	 */
	@WebMethod
	public boolean puedeBuscarmensajesPorAutor(
			@WebParam(name = "username") String username,
			@WebParam(name = "idAmbito") int idAmbito) {
		// List<Integer> coordinadores =
		// ConsultasHelper.obtenerCoordinadoresDeAmbito(idAmbito);
		// return coordinadores.contains(username);

		return queryHelper.esCoordinadorOParticipanteDelAmbito(username,
				idAmbito);
	}

	/**
	 * Verifica si un usuario tiene permisos para ver el indice Permisos
	 * necesarios: Participante , Coordinador o Visitante
	 * 
	 * @param username
	 *            the usuario id
	 * @param idAmbito
	 *            the ambito id
	 * @param idForo
	 *            the foro id
	 * @return true, if successful
	 * 
	 */

	@Override
	public boolean puedeMostrarIndice(
			@WebParam(name = "username") String username,
			@WebParam(name = "idAmbito") int idAmbito,
			@WebParam(name = "idForo") int idForo) {
		/* Debe devolver siempre true porque no necesita permisos de nada */
		return queryHelper.esCoordinadorOParticipanteDelAmbito(username,
				idAmbito);
	}

	/**
	 * Verifica si un usuario tiene permisos para ver un determinado subforo
	 * Permisos necesarios: Participante , Coordinador o Visitante
	 * 
	 * @param username
	 *            the usuario id
	 * @param idAmbito
	 *            the ambito id
	 * @return true, if successful
	 * 
	 */
	@Override
	public boolean puedeMostrarSubforo(
			@WebParam(name = "username") String username,
			@WebParam(name = "idAmbito") int idAmbito,
			@WebParam(name = "idForo") int idForo,
			@WebParam(name = "subIdForo") int subIdForo) {
		/* Debe devolver siempre true porque no necesita permisos de nada */
		return true;
	}
}
